package xin.xihc.jba.sql.clause;

import xin.xihc.jba.sql.KV;

/**
 * 原生表达式 o.a=o.b
 *
 * @author Leo.Xi
 * @since 1.0
 **/
public class NativeExp extends Clause<Object[]> {

    /**
     * 构造方法
     *
     * @param expression 表达式（允许带%s占位符，内部调用String.format）保存在columnName里
     * @param value      填充%s的值（无占位符可不传）
     * @author Leo Xi
     * @date 2020/9/8
     * @since 0.0.1
     */
    public NativeExp(String expression, Object... value) {
        super(expression, value);
    }

    @Override
    public Object[] value() {
        return this.value;
    }

    @Override
    public String operation() {
        return null;
    }

    @Override
    public String toSql(KV kv) {
        if (this.value == null) {
            return this.columnName;
        }
        Object[] keys = new Object[this.value().length];
        for (int i = 0; i < this.value().length; i++) {
            keys[i] = ":" + kv.add(this.value()[i]);
        }
        return String.format(this.columnName, keys);
    }
}
